home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)sds.d64 / sprites tut-1.64 (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  19KB  |  544 lines

  1. 0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
  2. 1 [143]"
  3. 1000 GOSUB60000:PRINTCHR$(142):PRINT"[147]               SPRITES-1"
  4. 1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  5. 1002 PRINT"[221]           SPRITES AND STUFF        [146] [221]":MS$="PONZOTUTOR"
  6. 1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!"
  7. 1004 GOSUB63100:FORI=0TO62:READ X:POKE832+I,X:NEXT:V=53248:POKE2040,13:POKEV+21,1
  8. 1005 POKEV+39,1:POKEV+1,100:A$="                                   "
  9. 1006 B$="THIS IS A SPRITE"
  10. 1007 POKEV+39,1:POKEV+1,100:FORX=0TO255STEP8:POKEV,X:PRINTLEFT$(A$,8+X1);
  11. 1008 PRINTRIGHT$(B$,31-X2):X2=X2-(X2<32):X1=X1+1:FORT=1TO10:NEXT:NEXT
  12. 1009 GOSUB63000:FORI=0TO15:POKEV+39,I:FORT=1TO150:NEXT:NEXT:POKEV+21,0
  13. 1010 MS$=" YUM YUM":GOSUB63100:PRINT"[147]IT IS EASY TO HAVE UP TO 8 'SPRITES'"
  14. 1020 PRINT"ON THE SCREEN AT ONE TIME."
  15. 1030 PRINT"LET'S LABEL THE SPRITES 0,1,..7."
  16. 1040 PRINT"PICK A NUMBER N (0 TO 7) AND"
  17. 1050 PRINT"A BLOCK OF MEMORY TO HOLD THE"
  18. 1060 PRINT"INFORMATION ON THE 'SHAPE' OF"
  19. 1065 PRINT"SPRITE #N."
  20. 1070 MS$="NICE SHAPE":GOSUB63100:GOSUB63000
  21. 1080 PRINT"[147]NOW A SPRITE IS MADE UP OF AN ARRAY"
  22. 1090 PRINT"OF 'PIXELS' OR 'DOTS' ON THE SCREEN."
  23. 1100 PRINT"24 DOTS WIDE AND 21 DOTS TALL."
  24. 1110 PRINT"(24*21=504 DOTS IN TOTAL)."
  25. 1120 PRINT"EACH DOT IS EITHER 'ON' OR 'OFF'"
  26. 1125 PRINT"AND WE CAN INDICATE THIS WITH"
  27. 1130 PRINT"A '1' OR '0' (1=ON[146] & 0=OFF[146])"
  28. 1140 PRINT"THE 'SHAPE' INFO CAN THEN BE"
  29. 1150 PRINT" STORED AS 504 BINARY DIGITS"
  30. 1155 PRINT"(BITS),EITHER '1' OR '0'."
  31. 1160 PRINT"SINCE WE STORE NUMBERS IN BYTES"
  32. 1170 PRINT"IT WILL TAKE 504/8=63 BYTES!"
  33. 1180 GOSUB63000
  34. 1200 PRINT"[147]WE WILL RESERVE 63[146] BYTES OF MEMORY"
  35. 1210 PRINT"(LET'S CALL THEM 'BLOCKS')"
  36. 1220 PRINT"FOR EACH SPRITE 'SHAPE'."
  37. 1230 PRINT"YOU TELL ME THE 'BLOCK' NUMBER"
  38. 1240 PRINT"AND I'LL KNOW WHERE TO LOOK"
  39. 1250 PRINT"FOR THE SPRITE SHAPE!"
  40. 1260 PRINT"IN FACT IF YOU SAY BLOCK 90[146]"
  41. 1270 PRINT"I'LL GO TO MEMORY LOCATION"
  42. 1280 PRINT"64*90=5760 TO GET THE FIRST OF"
  43. 1290 PRINT"THE 63 BYTES!":MS$="63 BITES?!":GOSUB63100:GOSUB63000
  44. 1300 PRINT"[147]OK..YOU PICK AN N[146] (THE SPRITE #)"
  45. 1310 PRINT"AND A B[146] (THE BLOCK NUMBER)."
  46. 1320 PRINT"HINT[157][157][157][157][184][184][184][184][145]:B=11,13,14 & 15"
  47. 1330 PRINT"ARE VERY NICE BLOCKS 'CAUSE"
  48. 1340 PRINT"THE 63 BYTES OF MEMORY STARTING"
  49. 1350 PRINT"AT 64*11=704[146],64*13=832[146],64*14=896"
  50. 1360 PRINT"AND 64*15=960[146] ARE AVAILABLE!"
  51. 1370 PRINT"(..LET'S SAY 'RESERVED' FOR SPRITES)."
  52. 1380 PRINT"THEN YOU MUST POKE[146] THE 1[146]'S"
  53. 1390 PRINT"AND 0[146]'S INTO THE BLOCK."
  54. 1395 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":GOSUB63000
  55. 1400 PRINT"[147]LET'S SAY THAT AGAIN:"
  56. 1410 PRINT"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT"
  57. 1420 PRINT"NOW YOU TELL THE C64 WHERE"
  58. 1430 PRINT"THE SPRITE SHAPE IS STORED."
  59. 1440 PRINT"FOR SPRITE N[146], YOU MUST:"
  60. 1450 PRINT"110 POKE 2040+N,B[146]:REM B=BLOCK #"
  61. 1460 PRINT"NOW TO HAVE SPRITE #N DISPLAYED"
  62. 1470 PRINT"ON THE SCREEN YOU MUST ENABLE"
  63. 1480 PRINT"THIS SPRITE.":MS$="  2040+N[146]":GOSUB63100:GOSUB63000
  64. 1485 PRINT"[147]YOU'LL ALSO WANT TO PUT IT AT"
  65. 1486 PRINT"THE RIGHT PLACE ON THE SCREEN,"
  66. 1487 PRINT"GIVE IT A NICE COLOUR, MOVE IT"
  67. 1488 PRINT"AROUND, MAKE IT BIGGER OR SMALLER"
  68. 1489 PRINT"AND OTHER CLEVER THINGS."
  69. 1490 PRINT"ALL THIS INFORMATION MUST GO TO"
  70. 1495 PRINT"THE VIDEO CHIP[146]!":MS$="NICE CHIP!":GOSUB63100:GOSUB63000
  71. 1500 PRINT"[147]THE VIDEO CHIP"
  72. 1501 PRINT"THIS SEXY CHIP HAS 47 INTERNAL"
  73. 1502 PRINT"MEMORY LOCATIONS OR REGISTERS[146]."
  74. 1505 PRINT"THEY START AT $D000[146] IN HEXADECIMAL"
  75. 1510 PRINT"(NICE) AND 53248[146] IN DECIMAL"
  76. 1520 PRINT"(NOT SO NICE). ANYWAY LET:"
  77. 1530 PRINT"120 V=53248:REM VIDEO CHIP BASE"
  78. 1540 PRINT"TO 'TURN ON' SPRITE #N:"
  79. 1550 PRINT"130 POKE V+21,2^N"
  80. 1560 PRINT"YES....THAT'S 2^N."
  81. 1561 MS$="TURN ME ON":GOSUB63100:GOSUB63000
  82. 1565 PRINT"[147]YOU SEE, THE REGISTER AT V+21"
  83. 1570 PRINT"WHICH 'ENABLES' SPRITES HAS 8 BITS."
  84. 1571 PRINT"WE LABEL THE BITS 0,1,...7"
  85. 1572 PRINT"(SOUND FAMILIAR?)"
  86. 1575 PRINT"EACH BIT CORRESPONDS TO A SPRITE."
  87. 1576 PRINT"TO 'SEE' SPRITE #5, TURN ON THE"
  88. 1577 PRINT"BIT #5!"
  89. 1578 PRINT"HOW? JUST POKE V+21,32[146]"
  90. 1580 PRINT"NOTE[157][157][157][157][184][184][184][184][145]:              2^5=32"
  91. 1581 MS$=" 00100000":GOSUB63100:GOSUB63000
  92. 1590 PRINT"[147]FOR OUR 'SPRITE #N' WE WILL:"
  93. 1595 PRINT"130 POKEV+21,2^N"
  94. 1596 PRINT"(YOU WON'T BE SURPRISED TO SEE"
  95. 1600 PRINT"THAT ANY OTHER SPRITES WILL"
  96. 1610 PRINT"DISAPPEAR!)"
  97. 1620 PRINT"IF YOU WANT SPRITE #0 AND[146] SPRITE #3"
  98. 1630 PRINT"AND[146] SPRITE #7 ALL[146] 'ENABLED' OR 'VISIBLE'"
  99. 1640 PRINT"THEN POKEV+21,1+8+128[146]"
  100. 1650 PRINT"NOTE:2^0+2^3+2^7=1+8+128 (NICE)!"
  101. 1660 PRINT"YOU WANT ALL 8 SPRITES?
  102. 1670 [153]"POKEV+21,255":MS$[178]" 10001001":[141]63100:[141]63000
  103. 1700 [153]"LOADSO FAR WE HAVE:"
  104. 1710 [153]"100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT"
  105. 1720 [153]"110 POKE2040+N,B:REM WHERE SHAPE IS    "
  106. 1730 [153]"120 V=53248:     REM VIDEO CHIP BASE   "
  107. 1740 [153]"130 POKEV+21,2^N:REM ENABLE SPRITE     "
  108. 1750 [153]"..AND SPRITE #N IS ON THE SCREEN!"
  109. 1760 [153]"BUT WHERE AND WHAT COLOUR?!*+!"
  110. 1770 [153]"THERE ARE 16 COLOURS TO CHOOSE FROM."
  111. 1780 [153]"WE LABEL THEM 0,1,2,...15."
  112. 1790 [153]"TO MAKE SPRITE #N COLOUR #10"
  113. 1800 [153]"(A LIGHT RED) WE POKE ANOTHER"
  114. 1810 [153]"MAGIC REGISTER IN THE VIDEO CHIP.""
  115. 1820 PRINT"POKEV+39+N,10[146]:SPRITE #N IS RED!":GOSUB63000
  116. 1830 PRINT"[147]MAYBE WE SHOULD HAVE PICKED A"
  117. 1840 PRINT"COLOUR BEFORE[146] WE MADE THE SPRITE"
  118. 1845 PRINT"VISIBLE! THE LAST THING WE WANT"
  119. 1847 PRINT"TO DO IS TO DISPLAY OUR SPRITE"
  120. 1848 PRINT"BEFORE IT'S PRESENTABLE!"
  121. 1850 PRINT"ANYWAY, WE'LL FIX THAT UP LATER.":MS$=" PATIENCE":GOSUB63100
  122. 1855 GOSUB63000
  123. 1860 PRINT"[147]HOW ABOUT THE POSITION ON THE"
  124. 1870 PRINT"SCREEN? WELL THE C64 HAS 40 COLUMNS"
  125. 1880 PRINT"OR 'PRINT POSITIONS'. EACH IS"
  126. 1890 PRINT"8 'DOTS' WIDE. THAT MAKES 40*8=320"                                "
  127. 1891 [153]"DOTS HORIZONTALLY AND WE SHOULD"
  128. 1900 [153]"BE ABLE TO 'POSITION' OUR SPRITE #N"
  129. 1910 [153]"IN ANY OF 320 X-POSITIONS."
  130. 1920 [153]"ALSO, THE C64 HAS  25 ROWS, EACH "
  131. 1930 [153]"8 DOTS HIGH AND 25*8=200 SO THERE"
  132. 1950 [153]"WILL BE 200 POSSIBLE Y-POSITIONS"
  133. 1960 [153]"FOR OUR SPRITE.":[141]63000
  134. 1970 [153]"LOADWHERE DO WE PUT THIS X-POSITION &"
  135. 1980 [153]"Y-POSITION INFORMATION?"
  136. 1990 [153]"INTO ANOTHER V+SOMETHINGWAIT REGISTER."
  137. 2000 [153]"THIS TIME WE:"
  138. 2010 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
  139. 2020 [153]"AS LONG AS 'X' AND 'Y' ARE BOTH"
  140. 2025 [153]"LESS THAN 256 WE'RE IN GOOD SHAPE!"
  141. 2040 [153]"IN FACT WE COULD:"
  142. 2050 [153]"FOR T=0 TO 500             "
  143. 2060 [153]"X=T/2:Y=T/3                "
  144. 2066 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
  145. 2070 [153]"NEXT T                     ":[141]63000
  146. 2080 [153]"LOADHOW ABOUT SOMETHING CUTE LIKE:"
  147. 2090 [153]"FOR T=0 TO 500             "
  148. 2100 [153]"X=FNX(T):Y=FNY(T)          "
  149. 2110 [153]"POKE V+2*N,X:POKE V+2*N+1,Y"
  150. 2120 [153]"NEXT T                     "
  151. 2130 [153]"THEN OUR SPRITE WOULD FOLLOW"
  152. 2140 [153]"A CURVE GIVEN BY SOME FUNCTIONS"
  153. 2150 [153]"FNX AND FNY, PREVIOUSLY DEFWAITINED."
  154. 2155 MS$[178]"DEF FNX(T)":[141]63100:[141]63000
  155. 2160 [153]"LOADIF YOU'D LIKE TO HAVE THE SPRITE"
  156. 2170 [153]"AT THE RIGHT ON THE SCREEN, IN"
  157. 2180 [153]"PIXEL POSITIONS 256 TO 320,"
  158. 2190 [153]"THEN WE HAVE TO DO THE FOLLOWING:"
  159. 2210 [153]"TELL IT TO THE VIDEO CHIP!":MS$[178]"NICE CHAP!":[141]63100
  160. 2215 [141]63000
  161. 2220 [153]"LOADYET ANOTHER REGISTER, AT V+16, HAS"
  162. 2230 [153]"8 BITS, ONE FOR EACH OF 8 SPRITES,"
  163. 2240 [153]"AND FOR SPRITE #N WE WILL"
  164. 2250 [153]"POKE V+16,2^N"
  165. 2260 [153]"THIS TURNS ON 'BIT #N' SO THAT"
  166. 2270 [153]"SPRITE #N WILL BE ABLE TO MOVE THRU'"
  167. 2280 [153]"X-POSITIONS 256 TO 320!":MS$[178]" 256-320!":[141]63100:[141]63000
  168. 2290 [153]"LOADNOTEWAIT:POKE V+16,32 WILL AFFECT THE"
  169. 2300 [153]"X-POSITION OF SPRITE #5 BY ADDING 256"
  170. 2310 [153]"TO THE VALUE OF X POKEWAITD INTO V+2*5"
  171. 2320 [153]"POKE V+2*5,50:REM X-POS'N IS 50"
  172. 2330 [153]"POKE V+16,32:REM ADD 256"
  173. 2340 [153]"THIS PUTS SPRITE #5 IN X-POS'N 306"
  174. 2341 MS$[178]"   V+16WAIT":[141]63100:[141]63000
  175. 2345 [153]"LOADIF YOU WANT SPRITE #0 ANDWAIT SPRITE #3"
  176. 2350 [153]"ANDWAIT SPRITE #7 ALLWAIT 'AT THE RIGHT'"
  177. 2360 [153]"THEN PICK AN X0,X3 & X7:"
  178. 2370 [153]"POKE V+2*0,X0:REM X-POS'N OF #0"
  179. 2380 [153]"POKE V+2*3,X3:REM X-POS'N OF #3"
  180. 2390 [153]"POKE V+2*7,X7:REM X-POS'N OF #7"
  181. 2400 [153]"POKE V+16,1+8+128:ADD 256 TO ALL!"
  182. 2405 MS$[178]"   V+2*NWAIT":[141]63100:[141]63000:[153]"LOADCHOOSE BLOCK 13 & SPRITE 3"
  183. 2406 [153]"AND MAKE ALL 'SHAPE' BYTES=240WAIT"
  184. 2407 [153]" 99 B=13:N=3                           "
  185. 2410 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT "
  186. 2420 [153]"110 POKE2040+3,B:  REM WHERE SHAPE IS  "
  187. 2430 [153]"120 V=53248:       REM VIDEO CHIP BASE "
  188. 2440 [153]"130 POKE V+39+N,10:REM RED SPRITE      "
  189. 2450 [153]"140 POKEV+21,2^N:  REM ENABLE SPRITE   "
  190. 2460 [153]"150 FOR T=0 TO 500 STEP 5              "
  191. 2470 [153]"160 X=T/2:Y=180+T/5                    "
  192. 2475 [153]"170 POKE V+2*N,X:POKE V+2*N+1,Y        "
  193. 2480 [153]"180 NEXT T                             ":[141]4000
  194. 2485 MS$[178]" YUM !!!  WAIT":[141]63100
  195. 2490 [153]"ONONONONONONTHAT'S FOR ONE SPRITE..N=3":[151]V[170]21,0
  196. 2500 [153]"LET'S HAVE 3 SPRITES..#0, #3 AND #7.":[141]63000
  197. 2510 [153]"LOAD100 FORI=0TO62:READ X:POKE64*B+I,X:NEXT":[141]2600
  198. 2520 [153]"110 POKE2040+0,B:  REM #0'SHAPE BLOCK' ":[141]2610
  199. 2521 [153]"111 POKE2040+3,B:  REM #3'SHAPE BLOCK' ":[141]2620
  200. 2522 [153]"112 POKE2040+7,B:  REM #7'SHAPE BLOCK' ":[141]2630
  201. 2530 [153]"120 V=53248:       REM VIDEO CHIP BASE ":[141]2640
  202. 2540 [153]"130 POKE V+39+0,10:REM #0 IS RED       ":[141]2650
  203. 2541 [153]"131 POKE V+39+3,12:REM #3 IS WHITE     ":[141]2660
  204. 2542 [153]"132 POKE V+39+7,14:REM #7 IS BLUE      ":[141]2670
  205. 2550 [153]"140 POKEV+21,1+8+128:REM ENABLE SPRITES":[141]2680
  206. 2560 [153]"150 FOR T=0 TO 500: TT=T/50            ":[141]2690
  207. 2565 [153]"160 X0=T/2:Y0=T/3                      ":[141]2700
  208. 2566 [153]"161 X3=250-T/2:Y3=200-T/3              ":[141]2710
  209. 2567 [153]"162 X7=150+100*SIN(TT):Y7=100+50*COS(TT)":[141]2720
  210. 2570 [153]"170 POKE V+2*0,X0:POKE V+2*0+1,Y0      ":[141]2730
  211. 2575 [153]"171 POKE V+2*3,X3:POKE V+2*3+1,Y3      ":[141]2740
  212. 2576 [153]"172 POKE V+2*7,X7:POKE V+2*7+1,Y7      ":[141]2750
  213. 2580 [153]"180 NEXT T                             "
  214. 2590 [141]2760:[141]12500:MS$[178]" WHEE!!":[141]63100:[141]63000:[137]2800
  215. 2600 [153]"PUT DATA INTO BLOCK 'B'":[141]63000:[142]
  216. 2610 [153]"TELL WHERE #0 SHAPE IS ":[141]63000:[142]
  217. 2620 [153]"TELL WHERE #3 SHAPE IS ":[141]63000:[142]
  218. 2630 [153]"TELL WHERE #7 SHAPE IS ":[141]63000:[142]
  219. 2640 [153]"REMEMBER THIS NUMBER!!!":[141]63000:[142]
  220. 2650 [153]"POKE V+39+N & N=0..OK? ":[141]63000:[142]
  221. 2660 [153]"POKE V+39+N & N=3..OK! ":[141]63000:[142]
  222. 2670 [153]".....WHAT ELSE?....... ":[141]63000:[142]
  223. 2680 [153]"TURN THEM ALL ON!!!!!!!":[141]63000:[142]
  224. 2690 [153]"NOW,FOR 500 STEPS OR SO":[141]63000:[142]
  225. 2700 [153]"DEFINE X- AND Y-POS'NS.":[141]63000:[142]
  226. 2710 [153]"FOR #3 TOO             ":[141]63000:[142]
  227. 2720 [153]"AND #7...!?*           ":[141]63000:[142]
  228. 2730 [153]"MOVE SPRITE #0         ":[141]63000:[142]
  229. 2740 [153]"MOVE SPRITE #3         ":[141]63000:[142]
  230. 2750 [153]"MOVE SPRITE #7         ":[141]63000:[142]
  231. 2760 [153]"ON TO NEXT T.          ":[141]63000:[142]
  232. 2800 [153]"LOADSTOPOF COURSE WE COULD HAVE THE SPRITES"
  233. 2810 [153]"EACH A DIFFERENT SHAPE."
  234. 2820 [153]"WE COULD:"
  235. 2830 [153]"FORI=0TO62:READ X:POKE64*B0+I,X:NEXT"
  236. 2840 [153]"FORI=0TO62:READ X:POKE64*B3+I,X:NEXT"
  237. 2850 [153]"FORI=0TO62:READ X:POKE64*B7+I,X:NEXT"
  238. 2860 [153]"AND HAVE B0, B3 AND B7 ALL DIFFERENT"
  239. 2870 [153]"THEN WE'D TELL THE C64 WHERE THEY ARE:"
  240. 2880 [153]"POKE2040+0,B0"
  241. 2881 [153]"POKE2040+3,B3"
  242. 2882 [153]"POKE2040+7,B7"
  243. 2885 MS$[178]"  2040+NWAIT":[141]63100
  244. 2890 [141]63000
  245. 2900 [153]"LOADLET'S PLAY WITH THE SPRITE CREATED WITH:"
  246. 2910 [153]" 99 B=13:N=3                           "
  247. 2920 [153]"100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT "
  248. 2930 [153]"110 ETC. ETC. ETC.                     "
  249. 2940 N[178]3:B[178]13:T0[178]500:T1[178]500:[141]4100
  250. 2950 [141]63000
  251. 2955 [153]"TO CHANGE IT'S SIZE"
  252. 2956 [153]"WE POKE ANOTHER V+SOMETHINGWAIT REGISTER!":[141]63000
  253. 2960 [153]"LOADWE'LL EXPAND THE X-DIMENSION:"
  254. 2970 [153]"    POKE V+29,2^N                      ":[141]63000:[151]V[170]29,2[174]N
  255. 2980 [153]"WE'LL EXPAND THE Y-DIMENSION:"
  256. 2990 [153]"    POKE V+23,2^N                      ":[141]63000:[151]V[170]23,2[174]N
  257. 3000 [153]"WE'LL SHRINK THE X-DIMENSION:"
  258. 3010 [153]"    POKE V+29,0                        ":[141]63000:[151]V[170]29,0
  259. 3020 [153]"WE'LL SHRINK THE Y-DIMENSION:"
  260. 3030 [153]"    POKE V+23,0                        ":[141]63000:[151]V[170]23,0
  261. 3040 [141]63000:[151]V[170]21,0
  262. 3050 [153]"LOADWHAT ABOUT THIS READ X:POKE 832+I,XWAIT?"
  263. 3060 [153]"READ WHAT?"
  264. 3070 [153]"A SPRITE, REMEMBER, IS 24 PIXELS WIDE."
  265. 3080 [153]"THAT'S 3WAIT BYTES WHICH THEN GIVE THE"
  266. 3090 [153]"FIRSTWAIT OF 21 ROWS OF PIXEL INFORMATION."
  267. 3100 [153]"IF THE 3 BYTES WERE 255,85 AND 8"
  268. 3200 [153]"WHICH,IN BINARY LOOK LIKE A STRING"
  269. 3210 [153]"OF 1'S AND 0'S, NAMELY:"
  270. 3220 [153]"11111111 & 01010101 & 00001000"
  271. 3225 [153]"OR, SIDE BY SIDE:"
  272. 3226 [153]"111111110101010100001000"
  273. 3227 [141]63000
  274. 3228 [153]"LOAD111111110101010100001000"
  275. 3230 [153]"THEN THE FIRST ROW OF PIXELS WOULD BE:"
  276. 3240 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null)    (null)   "
  277. 3250 [141]63000
  278. 3260 [153]"SEE!":[141]63000
  279. 3270 [153]"111111110101010100001000"
  280. 3275 [153]"^^^^^^^^ ^ ^ ^ ^    ^   "
  281. 3280 [153]"(null)(null)(null)(null)(null)(null)(null)(null) (null) (null) (null) (null)    (null)   ":[141]63000
  282. 3290 [153]"IF THE NEXT 3 BYTES IN THE"
  283. 3300 [153]"BLOCK OF MEMORY WHICH HAS THE 'SHAPE'"
  284. 3310 [153]"WERE 170,0,170 THEN:":[141]63000
  285. 3320 [153]"101010100000000010101010"
  286. 3330 [153]"(null) (null) (null) (null)         (null) (null) (null) (null) "
  287. 3335 [153]"<TAN170TANTAN><TANTAN0TANTANTAN><TAN170TANTAN>":[141]63000
  288. 3340 [153]"LOADLET'S MAKE A PACMANWAIT:":[141]63000:[153]"LOAD":[141]7000:[141]6900
  289. 3350 [141]63000:[153]"NOW..."
  290. 3360 [153]"IN BINARY!":[141]63000:T[178]200
  291. 3400 [153]"  000000001111111100000000
  292. 3401 FORI=1TOT:NEXT
  293. 3410 PRINT"  000001111111111110000000
  294. 3411 [129]I[178]1[164]T:[130]
  295. 3420 [153]"  000011111111111111000000
  296. 3421 FORI=1TOT:NEXT
  297. 3430 PRINT"  000111111111111111100000
  298. 3431 [129]I[178]1[164]T:[130]
  299. 3440 [153]"  001111110000011111110000
  300. 3441 FORI=1TOT:NEXT
  301. 3450 PRINT"  011111110000011111111000
  302. 3451 [129]I[178]1[164]T:[130]
  303. 3460 [153]"  111111110111011111110000
  304. 3461 FORI=1TOT:NEXT
  305. 3470 PRINT"  111111110111011111100000
  306. 3471 [129]I[178]1[164]T:[130]
  307. 3480 [153]"  111111111111111111000000
  308. 3481 FORI=1TOT:NEXT
  309. 3490 PRINT"  111111111111111110000000
  310. 3491 [129]I[178]1[164]T:[130]
  311. 3500 [153]"  111111111111111100000000
  312. 3501 FORI=1TOT:NEXT
  313. 3510 PRINT"  111111111111111100000000
  314. 3511 [129]I[178]1[164]T:[130]
  315. 3520 [153]"  011111111111111110000000
  316. 3521 FORI=1TOT:NEXT
  317. 3530 PRINT"  001111111111111111000000
  318. 3531 [129]I[178]1[164]T:[130]
  319. 3540 [153]"  000111111111111111100000
  320. 3541 FORI=1TOT:NEXT
  321. 3550 PRINT"  000011111111111111110000
  322. 3551 [129]I[178]1[164]T:[130]
  323. 3560 [153]"  000001111111111111111000
  324. 3561 FORI=1TOT:NEXT
  325. 3570 PRINT"  000000011111111111111100
  326. 3571 [129]I[178]1[164]T:[130]
  327. 3580 [153]"  000000000111111111111000
  328. 3581 FORI=1TOT:NEXT
  329. 3590 PRINT"  000000000001111110000000
  330. 3591 [129]I[178]1[164]T:[130]
  331. 3600 [153]"  000000000000111000000000
  332. 3601 FORI=1TOT:NEXT
  333. 3610 GOSUB63000:PRINT"PICK OUT"
  334. 3620 PRINT"THE BYTES!":GOSUB63000:T=200
  335. 3630 PRINT"  <[192][192][192]0[192][192]><[192]255[192][192]><[192][192][192]0[192][192]>
  336. 3631 [129]I[178]1[164]T:[130]
  337. 3640 [153]"  <TANTANTAN7TANTAN><TAN255TANTAN><TAN128TANTAN>
  338. 3641 FORI=1TOT:NEXT
  339. 3650 PRINT"  <[192][192]15[192][192]><[192]255[192][192]><[192]192[192][192]>
  340. 3651 [129]I[178]1[164]T:[130]
  341. 3660 [153]"  <TANTAN31TANTAN><TAN255TANTAN><TAN224TANTAN>
  342. 3661 FORI=1TOT:NEXT
  343. 3670 PRINT"  <[192][192]63[192][192]><[192][192][192]7[192][192]><[192]240[192][192]>
  344. 3671 [129]I[178]1[164]T:[130]
  345. 3680 [153]"  <TAN127TANTAN><TANTANTAN7TANTAN><TAN248TANTAN>
  346. 3681 FORI=1TOT:NEXT
  347. 3690 PRINT"  <[192]255[192][192]><[192]119[192][192]><[192]240[192][192]>
  348. 3691 [129]I[178]1[164]T:[130]
  349. 3700 [153]"  <TAN255TANTAN><TAN119TANTAN><TAN224TANTAN>
  350. 3701 FORI=1TOT:NEXT
  351. 3710 PRINT"  <[192]255[192][192]><[192]255[192][192]><[192]192[192][192]>
  352. 3711 [129]I[178]1[164]T:[130]
  353. 3720 [153]"  <TAN255TANTAN><TAN255TANTAN><TAN128TANTAN>
  354. 3721 FORI=1TOT:NEXT
  355. 3730 PRINT"  <[192]255[192][192]><[192]255[192][192]><[192][192][192]0[192][192]>
  356. 3731 [129]I[178]1[164]T:[130]
  357. 3740 [153]"  <TAN255TANTAN><TAN255TANTAN><TANTANTAN0TANTAN>
  358. 3741 FORI=1TOT:NEXT
  359. 3750 PRINT"  <[192]127[192][192]><[192]255[192][192]><[192]128[192][192]>
  360. 3751 [129]I[178]1[164]T:[130]
  361. 3760 [153]"  <TANTAN63TANTAN><TAN255TANTAN><TAN192TANTAN>
  362. 3761 FORI=1TOT:NEXT
  363. 3770 PRINT"  <[192][192]31[192][192]><[192]255[192][192]><[192]224[192][192]>
  364. 3771 [129]I[178]1[164]T:[130]
  365. 3780 [153]"  <TANTAN15TANTAN><TAN255TANTAN><TAN240TANTAN>
  366. 3781 FORI=1TOT:NEXT
  367. 3790 PRINT"  <[192][192][192]7[192][192]><[192]255[192][192]><[192]248[192][192]>
  368. 3791 [129]I[178]1[164]T:[130]
  369. 3800 [153]"  <TANTANTAN1TANTAN><TAN255TANTAN><TAN252TANTAN>
  370. 3801 FORI=1TOT:NEXT
  371. 3810 PRINT"  <[192][192][192]0[192][192]><[192]127[192][192]><[192]248[192][192]>
  372. 3811 [129]I[178]1[164]T:[130]
  373. 3820 [153]"  <TANTANTAN0TANTAN><TANTAN31TANTAN><TAN128TANTAN>
  374. 3821 FORI=1TOT:NEXT
  375. 3830 PRINT"  <[192][192][192]0[192][192]><[192][192]14[192][192]><[192][192][192]0[192][192]>
  376. 3831 [129]I[178]1[164]T:[130]
  377. 3850 [141]63000:[153]"NOW...  "
  378. 3851 [153]"PUT THESE "
  379. 3852 [153]"NUMBERS   "
  380. 3853 [153]"INTO DATA "
  381. 3854 [153]"STATEMENTS"
  382. 3855 [153]"..THEN..  "
  383. 3856 [153]"  READ   "
  384. 3857 [153]" AND      "
  385. 3858 [153]"  POKE   "
  386. 3860 [141]63000:[153]"LOAD"
  387. 3865 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
  388. 3870 [153]"101 DATA 0,255,0"
  389. 3880 [153]"102 DATA 7,255,128"
  390. 3890 [153]"103 DATA 15,255,192
  391. 3900 PRINT"... ETC. ETC. ETC."
  392. 3910 PRINT"121 DATA 0,14,0"
  393. 3920 MS$=" SIMPLE!":GOSUB63100
  394. 3930 GOSUB63000:PRINT"[147]LET'S DO IT:":Q$="":GOSUB3931:GOTO10000
  395. 3931 PRINT""Q$"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
  396. 3932 PRINTQ$"200 POKE2040+3,13: REM WHERE SHAPE IS  ":IFGG=1THEN3934
  397. 3933 PRINTQ$"300 V=53248:       REM VIDEO CHIP BASE "
  398. 3934 PRINTQ$"400 POKE V+39+3,10:REM RED SPRITE #3   "
  399. 3935 PRINTQ$"500 X=250:Y=200:   REM PICK A POSITION "
  400. 3936 PRINTQ$"600 POKE V+2*3,X:POKE V+2*3+1,Y        ":IFGG=1THENRETURN
  401. 3937 PRINTQ$"700 POKEV+21,2^3:  REM ENABLE SPRITE #3":RETURN
  402. 3940 DATA0,255,0,7,255,128,15,255,192,31,255,224,63,7,240,127,7,248,255,119,240
  403. 3941 DATA255,119,224,255,255,192,255,255,128,255,255,0,255,255,0,127,255,128
  404. 3942 DATA63,255,192,31,255,224,15,255,240,7,255,248,1,255,252,0,127,248
  405. 3943 DATA0,31,128,0,14,0
  406. 4000 REM SPRITES
  407. 4010 B=13:REM BLOCK 13
  408. 4020 N=3 :REM SPRITE #0
  409. 4030 T0=0:T1=500:GOSUB4100:RETURN
  410. 4100 FORI=0TO62:X=240:POKE64*B+I,X:NEXT
  411. 4110 POKE2040+N,B:  REM WHERE SHAPE IS
  412. 4120 V=53248:       REM VIDEO CHIP BASE
  413. 4130 POKE V+39+N,10:REM RED SPRITE
  414. 4135 POKE V+2*N,0:POKE V+2*N+1,0
  415. 4136 POKE V+29,0:POKE V+23,0
  416. 4140 POKEV+21,2^N:  REM ENABLE SPRITE
  417. 4150 FOR T=T0 TO T1 STEP 5
  418. 4160 X=T/2:Y=100+T/5
  419. 4170 POKE V+2*N,X:POKE V+2*N+1,Y
  420. 4180 NEXT T
  421. 4190 RETURN
  422. 5000 PRINT"[147]":MS$="AU REVOIR!":GOSUB63100
  423. 5010 PRINT"LOAD"CHR$(34)">SPRITES-2"CHR$(34)",8":PRINT"RUN":END
  424. 6900 PRINT"           111111111122222 "
  425. 6901 PRINT"  123456789012345678901234 "
  426. 6902 PRINT" 1"
  427. 6903 PRINT" 2"
  428. 6904 PRINT" 3"
  429. 6905 PRINT" 4"
  430. 6906 PRINT" 5"
  431. 6907 PRINT" 6"
  432. 6908 PRINT" 7"
  433. 6909 PRINT" 8"
  434. 6910 PRINT" 9"
  435. 6911 PRINT"10"
  436. 6912 PRINT"11"
  437. 6913 PRINT"12"
  438. 6914 PRINT"13"
  439. 6915 PRINT"14"
  440. 6916 PRINT"15"
  441. 6917 PRINT"16"
  442. 6918 PRINT"17"
  443. 6919 PRINT"18"
  444. 6920 PRINT"19"
  445. 6921 PRINT"20"
  446. 6922 PRINT"21"
  447. 6923 RETURN
  448. 7000 PRINT"         [209][209][209][209][209][209][209][209]
  449. 7001 [153]"       (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  450. 7002 PRINT"      [209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  451. 7003 [153]"     (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  452. 7004 PRINT"    [209][209][209][209][209][209]     [209][209][209][209][209][209][209]
  453. 7005 [153]"   (null)(null)(null)(null)(null)(null)(null)     (null)(null)(null)(null)(null)(null)(null)(null)
  454. 7006 PRINT"  [209][209][209][209][209][209][209][209] [209][209][209] [209][209][209][209][209][209][209]
  455. 7007 [153]"  (null)(null)(null)(null)(null)(null)(null)(null) (null)(null)(null) (null)(null)(null)(null)(null)(null)
  456. 7008 PRINT"  [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  457. 7009 [153]"  (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  458. 7010 PRINT"  [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  459. 7011 [153]"  (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  460. 7012 PRINT"   [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  461. 7013 [153]"    (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  462. 7014 PRINT"     [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  463. 7015 [153]"      (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  464. 7016 PRINT"       [209][209][209][209][209][209][209][209][209][209][209][209][209][209][209][209]
  465. 7017 [153]"         (null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)(null)
  466. 7018 PRINT"           [209][209][209][209][209][209][209][209][209][209][209][209]
  467. 7019 [153]"             (null)(null)(null)(null)(null)(null)(null)(null)
  468. 7020 PRINT"              [209][209][209][209][209][209]
  469. 7021 [142]
  470. 10000 [141]63000:[153]"LOADBETTER STILL..LET'S ENABLE"
  471. 10010 [153]"SPRITE #3 SO WE CAN SEEWAIT IT HAPPEN!"
  472. 10020 [153]"WE'LL SET V=53248WAIT"
  473. 10030 [153]"AND WE'LL POKE V+21,2^3"
  474. 10040 [153]"THEN WE'LL RUN THE PROGRAM:":GG[178]1:[141]3931:Q$[178]"WAIT"
  475. 10050 [141]63000:[153]"LOAD":[141]3931:[141]63000:V[178]53248
  476. 10051 [129]I[178]0[164]62:[151]832[170]I,240:[130]
  477. 10055 [151]V[170]6,250:[151]V[170]7,200:[151]V[170]29,0:[151]V[170]23,0:[151]V[170]21,8
  478. 10060 [153]"100 FORI=0TO62:READ X:POKE832+I,X:NEXT "
  479. 10065 [140]:[129]I[178]0[164]62:[135] X:[151]832[170]I,X:[130]
  480. 10070 [153]"200 POKE2040+3,13WAIT: TELL WHERE SHAPE IS"
  481. 10075 [151]2040[170]3,13:[141]10500
  482. 10080 [153]"400 POKE V+39+3,1WAIT: SPRITE #3 IS WHITE "
  483. 10085 [151] V[170]39[170]3,1:[141]10500
  484. 10090 [153]"500 X=200:Y=150WAIT:   PICK A POSITION     "
  485. 10095 X[178]200:Y[178]150:[141]10500
  486. 10100 [153]"600 POKE V+2*3,X:POKE V+2*3+1,Y"
  487. 10105 [151] V[170]2[172]3,X:[151] V[170]2[172]3[170]1,Y:[141]10500
  488. 10110 [153]"LOADPICK A COLOUR # (0 TO 15)";:[133] C$:C[178][197](C$)
  489. 10120 [139] C[179]0 [176] C[177]15 [167]10110
  490. 10130 [151]V[170]39[170]3,C:[141]63000:[151]V[170]39[170]3,1:[153]"WE DID N=3:POKEV+39+N,"C
  491. 10135 [141]63000
  492. 10140 [153]"PICK AN X-POSITION";:[133] X$:X%[178][197](X$):[139]X%[179]0[176]X%[177]355[167]10140
  493. 10145 [139]X%[177]255[167] XH%[178]8:X%[178]X%[171]256
  494. 10150 [151]V[170]2[172]3,X%:[151]V[170]16,XH%
  495. 10155 [153]"WE DID: N=3:POKEV+2*N,"X%":POKEV+16,"XH%:[141]63000
  496. 10160 [151]V[170]16,0:[151]V[170]2[172]3,150:[151]V[170]39[170]3,1
  497. 10170 [153]"WHAT WILL POKE V+29,2^3WAIT DO?":[141]63000:[151]V[170]29,8
  498. 10180 [153]"WHAT WILL POKE V+23,2^3WAIT DO?":[141]63000:[151]V[170]23,8
  499. 10499 [137]11000
  500. 10500 [129]J[178]1[164]3:[153]"     ":[129]K[178]1[164]100:[130]:[153]"DONE!"
  501. 10510 [153]"DONE!":[129]K[178]1[164]100:[130]:[130]:[141]63000
  502. 10520 [142]
  503. 11000 [141]63000:MS$[178]"AU REVOIR!":[153]"LOAD":[141]63100
  504. 11010 [153]"POKE 53248+21,0:REM TURN OFF!":[128]
  505. 12500 [143] SPRITES
  506. 12510 [129]I[178]0[164]62:X[178]240:[151]832[170]I,X:[130]
  507. 12520 [151]2040,13:[151]2040[170]3,13:[151]2040[170]7,13
  508. 12530 V[178]53248:[151] V[170]39,10:[151]V[170]39[170]3,1:[151]V[170]39[170]7,14
  509. 12540 [151]V[170]21,1[170]8[170]128
  510. 12560 [129] T[178]0 [164] 500 [169] 5
  511. 12565 X0[178]T[173]2:Y0[178]T[173]3
  512. 12566 X3[178]250[171]T[173]2:Y3[178]200[171]T[173]3
  513. 12567 X7[178]150[170]100[172][191](T[173]50):Y7[178]100[170]50[172][190](T[173]50)
  514. 12570 [151] V[170]2[172]0,X0:[151] V[170]2[172]0[170]1,Y0
  515. 12575 [151] V[170]2[172]3,X3:[151] V[170]2[172]3[170]1,Y3
  516. 12576 [151] V[170]2[172]7,X7:[151] V[170]2[172]7[170]1,Y7
  517. 12580 [130] T:[151]V[170]21,0:[142]
  518. 60000 [143] INITIALIZE
  519. 60001 BT$[178]"":[129]I[178]1[164]24:BT$[178]BT$[170]"":[130]
  520. 60002 PT$[178]"ORTANTANTANTANTANTANTANTANTANTAN^CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD/=TANTANTANTANTANTANTANTAN=EXP"
  521. 60003 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDFN============STOPTHEN"
  522. 60004 PT$[178]PT$[170]"CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD(null)(null)TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB((null)(null)ONONONONCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMD"
  523. 60005 PT$[178]BT$[170]"ONONONONONON"[170]PT$
  524. 60007 ML$[178]""
  525. 60008 WD[178]40:CRT[178]1024
  526. 60009 W2[178]WD[173]2:W3[178]WD[171]1:W1$[178][202]([196](WD),2):[151]53281,15:[151]53280,12:[153]"STOP"
  527. 60010 V[178]53248:[129]I[178]0[164]16:[151]V[170]I,0:[130]
  528. 60011 [151]V[170]23,0:[151]V[170]29,0:[129]I[178]0[164]7:[151]V[170]39[170]I,0:[130]
  529. 60020 [142]
  530. 62000 [141]63000
  531. 62001 [153]SD$CL$:[153]CL$:[153]CL$
  532. 62003 [142]
  533. 63000 [153]"STOPHIT RETURNWAIT TO CONTINUE";
  534. 63001 [161]A$:[139]A$[179][177]""[167]63001
  535. 63002 [161]A$:[139]A$[178]""[167]63002
  536. 63003 [142]
  537. 63100 [129]T[178]1[164]5:[153]PT$MS$;
  538. 63101 [153]PT$"          ";
  539. 63102 [153]PT$MS$;:[130]
  540. 63103 [153]"STOP":[142]
  541. 63900 SD$[178]"":CL$[178]"WAIT                                      WAIT"
  542. 63901 SR$[178]""
  543. 63902 [142]
  544.